/**
 * Copyright (C) 2017-2018 pinganfang, Inc. All Rights Reserved.
 */
package com.pingan.haofang.searchcloud.user.service;

import java.util.List;

import com.pingan.haofang.searchcloud.user.dto.ProjectQueryDto;
import com.pingan.haofang.searchcloud.user.dto.SearchProjectDto;

/**
 * 项目业务逻辑
 *
 * @author huhailiang937
 * @date 2017年5月2日下午8:55:57
 * @since 1.0.0
 */
public interface SearchProjectService {

    /**
     * 读取一个项目
     *
     * @param id
     * @return
     */
    SearchProjectDto get(Long id);

    /**
     * 根据项目ID获取Token
     *
     * @param projectId
     * @return
     */
    String getTokenByProjectId(Long projectId);

    /**
     * 获取列表
     *
     * @param query
     * @return
     */
    List<SearchProjectDto> getList(ProjectQueryDto query);

    /**
     * 删除
     *
     * @param id
     * @return
     */
    void delete(Long id);

    /**
     * 修改
     *
     * @param dto
     */
    Long update(SearchProjectDto dto);

    /**
     * 获取所有有效的项目
     *
     * @return
     */
    List<SearchProjectDto> findEnableProjects();


    /**
     * 获取token
     *
     * @param requestAppCode
     * @return
     */
    String getTokenByProjectCode(String requestAppCode);

    /**
     * 发送token通知
     *
     * @param projectId      项目id
     * @param emailAddresses 邮件地址列表
     * @param host           域名
     */
    void sendTokenNotify(Long projectId, List<String> emailAddresses, String host);
    

    /**
     * 获取项目总量
     */
    int countProject();
}
